package com.shelpe.services.sinbad.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.shelpe.services.sinbad.model.RptKeyword;
import com.shelpe.services.sinbad.model.RptKeywordExample;
import com.shelpe.services.sinbad.model.RptKeywordKey;

public interface RptKeywordMapper {
    int countByExample(RptKeywordExample example);

    int deleteByExample(RptKeywordExample example);

    int deleteByPrimaryKey(RptKeywordKey key);

    int insert(RptKeyword record);

    int insertSelective(RptKeyword record);

    List<RptKeyword> selectByExample(RptKeywordExample example);

    RptKeyword selectByPrimaryKey(RptKeywordKey key);

    int updateByExampleSelective(@Param("record") RptKeyword record, @Param("example") RptKeywordExample example);

    int updateByExample(@Param("record") RptKeyword record, @Param("example") RptKeywordExample example);

    int updateByPrimaryKeySelective(RptKeyword record);

    int updateByPrimaryKey(RptKeyword record);
    
    RptKeyword selectSumByExample(RptKeywordExample example);
    /**
     * 分组获取关键词的ctr、roi 
     * @param example
     * @return
     */
    List<RptKeyword> selectCtrRoiByExample(RptKeywordExample example);
    /**
     *获取ctr宝贝均值 
     * @param example
     * @return
     */
    Map<Long, Float> selectAvgCtrByExample(RptKeywordExample example);

    /**
     * 获取展现量
     * @param example
     * @return 
     */
    List<RptKeyword> selectImpressionsByExample(RptKeywordExample example);

    /**
     * 获取点击量 
     * @param example
     * @return 
     */
    List<RptKeyword> selectClickByExample(RptKeywordExample example);
    
    /**
     * 获取质量得分 
     * @param example
     * @return 
     */
    List<RptKeyword> selectQscoreByExample(RptKeywordExample example);
    
    /**
     * 指标摘要
     * @param example
     * @return
     */
    RptKeyword selectSummariesMetric(RptKeywordExample example);
    /**
     * 获取趋势图 数据  时间维度  以日期分组 
     * @param example
     * @return
     */
    List<RptKeyword> selectReportsTrendByDate(RptKeywordExample example);
    /**
     * 获取趋势图 数据  推广单元维度  推广计划级别 以推广组分组
     * @param example
     * @return
     */
    List<RptKeyword> selectReportsTrendByCampaignId(RptKeywordExample example);
    /**
     * 获取趋势图 数据   推广单元维度  推广组级别 以关键词分组
     * @param example
     * @return
     */
    List<RptKeyword> selectReportsTrendByAdgroupId(RptKeywordExample example);
    /**
     * 获取趋势图 数据   推广单元维度  用户级别 以推广计划分组
     * @param example
     * @return
     */
    List<RptKeyword> selectReportsTrendByUserId(RptKeywordExample example);
    
    
}